코딩테스트 연습 - 문자열 다루기 기본 | 프로그래머스 스쿨

[ 템플릿 코드 ]

#include <string>
#include <vector>
 
using namespace std;
 
bool solution(string s) {
    bool answer = true;
    return answer;
}

[ 풀이 ]

#include <string>
 
using namespace std;
 
bool solution(string s)
{
    if (s.length() != 4 && s.length() != 6)
    {
        return false;
    }
    for (char c : s)
    {
        if (c < '0' || c > '9')
        {
            return false;
        }
    }
 
    return true;
}

[ 해설 ]

#include <string>
 
using namespace std;
 
bool solution(string s)
{
    // 길이가 4도 아니고 6도 아니면 false
    if (s.length() != 4 && s.length() != 6)
    {
        return false;
    }
 
    // 문자열의 모든 문자를 확인
    for (char c : s)
    {
        // 숫자가 아니면 false
        if (c < '0' || c > '9')
        {
            return false;
        }
    }
 
    // 길이도 맞고 모두 숫자라면 true
    return true;
}

[ 타 답안 ]

#include <string>
#include <vector>
#include <sstream>
 
using namespace std;
 
bool solution(string s)
{
    // 기본 반환값은 false로 설정
    bool answer = false;
 
    // 문자열을 입력 스트림처럼 사용하기 위한 객체 생성
    stringstream ss;
 
    // 문자열을 숫자로 변환하여 저장할 변수
    int num;
 
    // 문자열 s를 stringstream에 넣음
    ss.str(s);
 
    // 문자열 길이가 4인 경우
    if (s.size() == 4)
    {
        // stringstream에 저장된 문자열을 int로 변환
        ss >> num;
 
        // 숫자가 1000 이상이면 4자리 숫자라고 판단
        // (예: 1234 -> true)
        if (num - 1000 >= 0)
            answer = true;
    }
    // 문자열 길이가 6인 경우
    else if (s.size() == 6)
    {
        // stringstream에 저장된 문자열을 int로 변환
        ss >> num;
 
        // 숫자가 100000 이상이면 6자리 숫자라고 판단
        // (예: 123456 -> true)
        if (num - 100000 >= 0)
            answer = true;
    }
 
    // 최종 결과 반환
    return answer;
}

C++ CodingTest